<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/vmalloc.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/vmalloc.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX1ZNQUxMT0NfSF8w"><span class="b">_LINUX_VMALLOC_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX1ZNQUxMT0NfSF8w"><span class="b">_LINUX_VMALLOC_H</span></a>
<a name="3" /><span class="True">       3:</span> 
<a name="4" /><span class="True">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">spinlock</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="True">       5:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">init</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="6" /><span class="True">       6:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">list</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="7" /><span class="True">       7:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">page</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>        <span class="k">/* pgprot_t */</span>
<a name="8" /><span class="True">       8:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">rbtree</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="9" /><span class="True">       9:</span> 
<a name="10" /><span class="True">      10:</span> <span class="m">struct</span> <span class="b">vm_area_struct</span><span class="f">;</span>        <span class="k">/* vma defining user mapping in mm_types.h */</span>
<a name="11" /><span class="True">      11:</span> 
<a name="12" /><span class="True">      12:</span> <span class="k">/* bits in flags of vmalloc&apos;s vm_struct below */</span>
<a name="13" /><span class="True">      13:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Vk1fSU9SRU1BUF8w"><span class="b">VM_IOREMAP</span></a>        <span class="c">0x00000001</span>    <span class="k">/* ioremap() and friends */</span>
<a name="14" /><span class="True">      14:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Vk1fQUxMT0NfMA__"><span class="b">VM_ALLOC</span></a>        <span class="c">0x00000002</span>    <span class="k">/* vmalloc() */</span>
<a name="15" /><span class="True">      15:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Vk1fTUFQXzA_"><span class="b">VM_MAP</span></a>            <span class="c">0x00000004</span>    <span class="k">/* vmap()ed pages */</span>
<a name="16" /><span class="True">      16:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Vk1fVVNFUk1BUF8w"><span class="b">VM_USERMAP</span></a>        <span class="c">0x00000008</span>    <span class="k">/* suitable for remap_vmalloc_range */</span>
<a name="17" /><span class="True">      17:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Vk1fVlBBR0VTXzA_"><span class="b">VM_VPAGES</span></a>        <span class="c">0x00000010</span>    <span class="k">/* buffer for pages was vmalloc&apos;ed */</span>
<a name="18" /><span class="True">      18:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Vk1fVU5JTklUSUFMSVpFRF8w"><span class="b">VM_UNINITIALIZED</span></a>    <span class="c">0x00000020</span>    <span class="k">/* vm_struct is not fully initialized */</span>
<a name="19" /><span class="True">      19:</span> <span class="k">/* bits [20..32] reserved for arch specific ioremap internals */</span>
<a name="20" /><span class="True">      20:</span> 
<a name="21" /><span class="True">      21:</span> <span class="k">/*</span>
<a name="22" /><span class="True">      22:</span> <span class="k"> * Maximum alignment for ioremap() regions.</span>
<a name="23" /><span class="True">      23:</span> <span class="k"> * Can be overriden by arch-specific value.</span>
<a name="24" /><span class="True">      24:</span> <span class="k"> */</span>
<a name="25" /><span class="True">      25:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_SU9SRU1BUF9NQVhfT1JERVJfMA__"><span class="b">IOREMAP_MAX_ORDER</span></a>
<a name="26" /><span class="True">      26:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SU9SRU1BUF9NQVhfT1JERVJfMA__"><span class="b">IOREMAP_MAX_ORDER</span></a>    <span class="f">(</span><span class="c">7</span> <span class="f">+</span> <a href="cpu.c_macros_ref.html#_UEFHRV9TSElGVF8w"><span class="b">PAGE_SHIFT</span></a><span class="f">)</span>    <span class="k">/* 128 pages */</span>
<a name="27" /><span class="True">      27:</span> <span class="f">#</span><span class="n">endif</span>
<a name="28" /><span class="True">      28:</span> 
<a name="29" /><span class="True">      29:</span> <span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">{</span>
<a name="30" /><span class="True">      30:</span>     <span class="m">struct</span> <span class="b">vm_struct</span>    <span class="f">*</span><span class="b">next</span><span class="f">;</span>
<a name="31" /><span class="True">      31:</span>     <span class="m">void</span>            <span class="f">*</span><span class="b">addr</span><span class="f">;</span>
<a name="32" /><span class="True">      32:</span>     <span class="m">unsigned</span> <span class="m">long</span>        <span class="b">size</span><span class="f">;</span>
<a name="33" /><span class="True">      33:</span>     <span class="m">unsigned</span> <span class="m">long</span>        <span class="b">flags</span><span class="f">;</span>
<a name="34" /><span class="True">      34:</span>     <span class="m">struct</span> <span class="b">page</span>        <span class="f">*</span><span class="f">*</span><span class="b">pages</span><span class="f">;</span>
<a name="35" /><span class="True">      35:</span>     <span class="m">unsigned</span> <span class="m">int</span>        <span class="b">nr_pages</span><span class="f">;</span>
<a name="36" /><span class="True">      36:</span>     <span class="b">phys_addr_t</span>        <span class="b">phys_addr</span><span class="f">;</span>
<a name="37" /><span class="True">      37:</span>     <span class="m">const</span> <span class="m">void</span>        <span class="f">*</span><span class="b">caller</span><span class="f">;</span>
<a name="38" /><span class="True">      38:</span> <span class="f">}</span><span class="f">;</span>
<a name="39" /><span class="True">      39:</span> 
<a name="40" /><span class="True">      40:</span> <span class="m">struct</span> <span class="b">vmap_area</span> <span class="f">{</span>
<a name="41" /><span class="True">      41:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">va_start</span><span class="f">;</span>
<a name="42" /><span class="True">      42:</span>     <span class="m">unsigned</span> <span class="m">long</span> <a href="cpu.c_macros_noref.html#_dmFfZW5kXzA_"><span class="b">va_end</span></a><span class="f">;</span>
<a name="43" /><span class="True">      43:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">;</span>
<a name="44" /><span class="True">      44:</span>     <span class="m">struct</span> <span class="b">rb_node</span> <span class="b">rb_node</span><span class="f">;</span>         <span class="k">/* address sorted rbtree */</span>
<a name="45" /><span class="True">      45:</span>     <span class="m">struct</span> <span class="b">list_head</span> <span class="b">list</span><span class="f">;</span>          <span class="k">/* address sorted list */</span>
<a name="46" /><span class="True">      46:</span>     <span class="m">struct</span> <span class="b">list_head</span> <span class="b">purge_list</span><span class="f">;</span>    <span class="k">/* &quot;lazy purge&quot; list */</span>
<a name="47" /><span class="True">      47:</span>     <span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="b">vm</span><span class="f">;</span>
<a name="48" /><span class="True">      48:</span>     <span class="m">struct</span> <a href="cpu.c_macros_ref.html#_cmN1X2hlYWRfMA__"><span class="b">rcu_head</span></a> <a href="cpu.c_macros_ref.html#_cmN1X2hlYWRfMA__"><span class="b">rcu_head</span></a><span class="f">;</span>
<a name="49" /><span class="True">      49:</span> <span class="f">}</span><span class="f">;</span>
<a name="50" /><span class="True">      50:</span> 
<a name="51" /><span class="True">      51:</span> <span class="k">/*</span>
<a name="52" /><span class="True">      52:</span> <span class="k"> *    Highlevel APIs for driver use</span>
<a name="53" /><span class="True">      53:</span> <span class="k"> */</span>
<a name="54" /><span class="True">      54:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">vm_unmap_ram</span><span class="f">(</span><span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">mem</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">count</span><span class="f">)</span><span class="f">;</span>
<a name="55" /><span class="True">      55:</span> <span class="m">extern</span> <span class="m">void</span> <span class="f">*</span><span class="b">vm_map_ram</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="f">*</span><span class="b">pages</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">count</span><span class="f">,</span>
<a name="56" /><span class="True">      56:</span>                 <span class="m">int</span> <span class="b">node</span><span class="f">,</span> <span class="b">pgprot_t</span> <span class="b">prot</span><span class="f">)</span><span class="f">;</span>
<a name="57" /><span class="True">      57:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">vm_unmap_aliases</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="58" /><span class="True">      58:</span> 
<a name="59" /><span class="True">      59:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX01NVV8w"><span class="b">CONFIG_MMU</span></a>
<a name="60" /><span class="True">      60:</span> <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X19pbml0XzA_"><span class="b">__init</span></a> <span class="b">vmalloc_init</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="61" /><span class="False">      61:</span> <span class="f">#</span><span class="n">else</span>
<a name="62" /><span class="False">      62:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">vmalloc_init</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="63" /><span class="False">      63:</span> <span class="f">{</span>
<a name="64" /><span class="False">      64:</span> <span class="f">}</span>
<a name="65" /><span class="True">      65:</span> <span class="f">#</span><span class="n">endif</span>
<a name="66" /><span class="True">      66:</span> 
<a name="67" /><span class="True">      67:</span> <span class="m">extern</span> <span class="m">void</span> <span class="f">*</span><span class="b">vmalloc</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="68" /><span class="True">      68:</span> <span class="m">extern</span> <span class="m">void</span> <span class="f">*</span><span class="b">vzalloc</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="69" /><span class="True">      69:</span> <span class="m">extern</span> <span class="m">void</span> <span class="f">*</span><span class="b">vmalloc_user</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="70" /><span class="True">      70:</span> <span class="m">extern</span> <span class="m">void</span> <span class="f">*</span><span class="b">vmalloc_node</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">,</span> <span class="m">int</span> <span class="b">node</span><span class="f">)</span><span class="f">;</span>
<a name="71" /><span class="True">      71:</span> <span class="m">extern</span> <span class="m">void</span> <span class="f">*</span><span class="b">vzalloc_node</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">,</span> <span class="m">int</span> <span class="b">node</span><span class="f">)</span><span class="f">;</span>
<a name="72" /><span class="True">      72:</span> <span class="m">extern</span> <span class="m">void</span> <span class="f">*</span><span class="b">vmalloc_exec</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="73" /><span class="True">      73:</span> <span class="m">extern</span> <span class="m">void</span> <span class="f">*</span><span class="b">vmalloc_32</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="74" /><span class="True">      74:</span> <span class="m">extern</span> <span class="m">void</span> <span class="f">*</span><span class="b">vmalloc_32_user</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="75" /><span class="True">      75:</span> <span class="m">extern</span> <span class="m">void</span> <span class="f">*</span><span class="b">__vmalloc</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">,</span> <span class="b">pgprot_t</span> <span class="b">prot</span><span class="f">)</span><span class="f">;</span>
<a name="76" /><span class="True">      76:</span> <span class="m">extern</span> <span class="m">void</span> <span class="f">*</span><span class="b">__vmalloc_node_range</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">align</span><span class="f">,</span>
<a name="77" /><span class="True">      77:</span>             <span class="m">unsigned</span> <span class="m">long</span> <span class="b">start</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">end</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">,</span>
<a name="78" /><span class="True">      78:</span>             <span class="b">pgprot_t</span> <span class="b">prot</span><span class="f">,</span> <span class="m">int</span> <span class="b">node</span><span class="f">,</span> <span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">caller</span><span class="f">)</span><span class="f">;</span>
<a name="79" /><span class="True">      79:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">vfree</span><span class="f">(</span><span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="80" /><span class="True">      80:</span> 
<a name="81" /><span class="True">      81:</span> <span class="m">extern</span> <span class="m">void</span> <span class="f">*</span><span class="b">vmap</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="f">*</span><span class="b">pages</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">count</span><span class="f">,</span>
<a name="82" /><span class="True">      82:</span>             <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">,</span> <span class="b">pgprot_t</span> <span class="b">prot</span><span class="f">)</span><span class="f">;</span>
<a name="83" /><span class="True">      83:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">vunmap</span><span class="f">(</span><span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="84" /><span class="True">      84:</span> 
<a name="85" /><span class="True">      85:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">remap_vmalloc_range_partial</span><span class="f">(</span><span class="m">struct</span> <span class="b">vm_area_struct</span> <span class="f">*</span><span class="b">vma</span><span class="f">,</span>
<a name="86" /><span class="True">      86:</span>                        <span class="m">unsigned</span> <span class="m">long</span> <span class="b">uaddr</span><span class="f">,</span> <span class="m">void</span> <span class="f">*</span><span class="b">kaddr</span><span class="f">,</span>
<a name="87" /><span class="True">      87:</span>                        <span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="88" /><span class="True">      88:</span> 
<a name="89" /><span class="True">      89:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">remap_vmalloc_range</span><span class="f">(</span><span class="m">struct</span> <span class="b">vm_area_struct</span> <span class="f">*</span><span class="b">vma</span><span class="f">,</span> <span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span>
<a name="90" /><span class="True">      90:</span>                             <span class="m">unsigned</span> <span class="m">long</span> <span class="b">pgoff</span><span class="f">)</span><span class="f">;</span>
<a name="91" /><span class="True">      91:</span> <span class="m">void</span> <span class="b">vmalloc_sync_all</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="92" /><span class="True">      92:</span>  
<a name="93" /><span class="True">      93:</span> <span class="k">/*</span>
<a name="94" /><span class="True">      94:</span> <span class="k"> *    Lowlevel-APIs (not for driver use!)</span>
<a name="95" /><span class="True">      95:</span> <span class="k"> */</span>
<a name="96" /><span class="True">      96:</span> 
<a name="97" /><span class="True">      97:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">size_t</span> <span class="b">get_vm_area_size</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="b">area</span><span class="f">)</span>
<a name="98" /><span class="True">      98:</span> <span class="f">{</span>
<a name="99" /><span class="True">      99:</span>     <span class="k">/* return actual size without guard page */</span>
<a name="100" /><span class="True">     100:</span>     <span class="m">return</span> <span class="b">area</span><span class="f">-&gt;</span><span class="b">size</span> <span class="f">-</span> <a href="cpu.c_macros_ref.html#_UEFHRV9TSVpFXzA_"><span class="b">PAGE_SIZE</span></a><span class="f">;</span>
<a name="101" /><span class="True">     101:</span> <span class="f">}</span>
<a name="102" /><span class="True">     102:</span> 
<a name="103" /><span class="True">     103:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="b">get_vm_area</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="104" /><span class="True">     104:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="b">get_vm_area_caller</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">,</span>
<a name="105" /><span class="True">     105:</span>                     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">,</span> <span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">caller</span><span class="f">)</span><span class="f">;</span>
<a name="106" /><span class="True">     106:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="b">__get_vm_area</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">,</span>
<a name="107" /><span class="True">     107:</span>                     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">start</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">end</span><span class="f">)</span><span class="f">;</span>
<a name="108" /><span class="True">     108:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="b">__get_vm_area_caller</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">,</span>
<a name="109" /><span class="True">     109:</span>                     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">,</span>
<a name="110" /><span class="True">     110:</span>                     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">start</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">end</span><span class="f">,</span>
<a name="111" /><span class="True">     111:</span>                     <span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">caller</span><span class="f">)</span><span class="f">;</span>
<a name="112" /><span class="True">     112:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="b">remove_vm_area</span><span class="f">(</span><span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="113" /><span class="True">     113:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="b">find_vm_area</span><span class="f">(</span><span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="114" /><span class="True">     114:</span> 
<a name="115" /><span class="True">     115:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">map_vm_area</span><span class="f">(</span><span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="b">area</span><span class="f">,</span> <span class="b">pgprot_t</span> <span class="b">prot</span><span class="f">,</span>
<a name="116" /><span class="True">     116:</span>             <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="f">*</span><span class="f">*</span><span class="b">pages</span><span class="f">)</span><span class="f">;</span>
<a name="117" /><span class="True">     117:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX01NVV8w"><span class="b">CONFIG_MMU</span></a>
<a name="118" /><span class="True">     118:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">map_kernel_range_noflush</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">start</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">,</span>
<a name="119" /><span class="True">     119:</span>                     <span class="b">pgprot_t</span> <span class="b">prot</span><span class="f">,</span> <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="f">*</span><span class="b">pages</span><span class="f">)</span><span class="f">;</span>
<a name="120" /><span class="True">     120:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">unmap_kernel_range_noflush</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="121" /><span class="True">     121:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">unmap_kernel_range</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="122" /><span class="False">     122:</span> <span class="f">#</span><span class="n">else</span>
<a name="123" /><span class="False">     123:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span>
<a name="124" /><span class="False">     124:</span> <span class="b">map_kernel_range_noflush</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">start</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">,</span>
<a name="125" /><span class="False">     125:</span>             <span class="b">pgprot_t</span> <span class="b">prot</span><span class="f">,</span> <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="f">*</span><span class="b">pages</span><span class="f">)</span>
<a name="126" /><span class="False">     126:</span> <span class="f">{</span>
<a name="127" /><span class="False">     127:</span>     <span class="m">return</span> <span class="b">size</span> <span class="f">&gt;&gt;</span> <a href="cpu.c_macros_ref.html#_UEFHRV9TSElGVF8w"><span class="b">PAGE_SHIFT</span></a><span class="f">;</span>
<a name="128" /><span class="False">     128:</span> <span class="f">}</span>
<a name="129" /><span class="False">     129:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="130" /><span class="False">     130:</span> <span class="b">unmap_kernel_range_noflush</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">)</span>
<a name="131" /><span class="False">     131:</span> <span class="f">{</span>
<a name="132" /><span class="False">     132:</span> <span class="f">}</span>
<a name="133" /><span class="False">     133:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="134" /><span class="False">     134:</span> <span class="b">unmap_kernel_range</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">size</span><span class="f">)</span>
<a name="135" /><span class="False">     135:</span> <span class="f">{</span>
<a name="136" /><span class="False">     136:</span> <span class="f">}</span>
<a name="137" /><span class="True">     137:</span> <span class="f">#</span><span class="n">endif</span>
<a name="138" /><span class="True">     138:</span> 
<a name="139" /><span class="True">     139:</span> <span class="k">/* Allocate/destroy a &apos;vmalloc&apos; VM area. */</span>
<a name="140" /><span class="True">     140:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="b">alloc_vm_area</span><span class="f">(</span><span class="b">size_t</span> <span class="b">size</span><span class="f">,</span> <span class="b">pte_t</span> <span class="f">*</span><span class="f">*</span><span class="b">ptes</span><span class="f">)</span><span class="f">;</span>
<a name="141" /><span class="True">     141:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">free_vm_area</span><span class="f">(</span><span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="b">area</span><span class="f">)</span><span class="f">;</span>
<a name="142" /><span class="True">     142:</span> 
<a name="143" /><span class="True">     143:</span> <span class="k">/* for /dev/kmem */</span>
<a name="144" /><span class="True">     144:</span> <span class="m">extern</span> <span class="m">long</span> <span class="b">vread</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">char</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">count</span><span class="f">)</span><span class="f">;</span>
<a name="145" /><span class="True">     145:</span> <span class="m">extern</span> <span class="m">long</span> <span class="b">vwrite</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">char</span> <span class="f">*</span><span class="b">addr</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">count</span><span class="f">)</span><span class="f">;</span>
<a name="146" /><span class="True">     146:</span> 
<a name="147" /><span class="True">     147:</span> <span class="k">/*</span>
<a name="148" /><span class="True">     148:</span> <span class="k"> *    Internals.  Dont&apos;t use..</span>
<a name="149" /><span class="True">     149:</span> <span class="k"> */</span>
<a name="150" /><span class="True">     150:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">list_head</span> <span class="b">vmap_area_list</span><span class="f">;</span>
<a name="151" /><span class="True">     151:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19pbml0XzA_"><span class="b">__init</span></a> <span class="m">void</span> <span class="b">vm_area_add_early</span><span class="f">(</span><span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="b">vm</span><span class="f">)</span><span class="f">;</span>
<a name="152" /><span class="True">     152:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19pbml0XzA_"><span class="b">__init</span></a> <span class="m">void</span> <span class="b">vm_area_register_early</span><span class="f">(</span><span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="b">vm</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">align</span><span class="f">)</span><span class="f">;</span>
<a name="153" /><span class="True">     153:</span> 
<a name="154" /><span class="True">     154:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1NNUF8w"><span class="b">CONFIG_SMP</span></a>
<a name="155" /><span class="True">     155:</span> <span class="f">#</span> <span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX01NVV8w"><span class="b">CONFIG_MMU</span></a>
<a name="156" /><span class="True">     156:</span> <span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="f">*</span><span class="b">pcpu_get_vm_areas</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">offsets</span><span class="f">,</span>
<a name="157" /><span class="True">     157:</span>                      <span class="m">const</span> <span class="b">size_t</span> <span class="f">*</span><span class="b">sizes</span><span class="f">,</span> <span class="m">int</span> <span class="b">nr_vms</span><span class="f">,</span>
<a name="158" /><span class="True">     158:</span>                      <span class="b">size_t</span> <span class="b">align</span><span class="f">)</span><span class="f">;</span>
<a name="159" /><span class="True">     159:</span> 
<a name="160" /><span class="True">     160:</span> <span class="m">void</span> <span class="b">pcpu_free_vm_areas</span><span class="f">(</span><span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="f">*</span><span class="b">vms</span><span class="f">,</span> <span class="m">int</span> <span class="b">nr_vms</span><span class="f">)</span><span class="f">;</span>
<a name="161" /><span class="False">     161:</span> <span class="f">#</span> <span class="n">else</span>
<a name="162" /><span class="False">     162:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="f">*</span>
<a name="163" /><span class="False">     163:</span> <span class="b">pcpu_get_vm_areas</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">offsets</span><span class="f">,</span>
<a name="164" /><span class="False">     164:</span>         <span class="m">const</span> <span class="b">size_t</span> <span class="f">*</span><span class="b">sizes</span><span class="f">,</span> <span class="m">int</span> <span class="b">nr_vms</span><span class="f">,</span>
<a name="165" /><span class="False">     165:</span>         <span class="b">size_t</span> <span class="b">align</span><span class="f">)</span>
<a name="166" /><span class="False">     166:</span> <span class="f">{</span>
<a name="167" /><span class="False">     167:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">;</span>
<a name="168" /><span class="False">     168:</span> <span class="f">}</span>
<a name="169" /><span class="False">     169:</span> 
<a name="170" /><span class="False">     170:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="171" /><span class="False">     171:</span> <span class="b">pcpu_free_vm_areas</span><span class="f">(</span><span class="m">struct</span> <span class="b">vm_struct</span> <span class="f">*</span><span class="f">*</span><span class="b">vms</span><span class="f">,</span> <span class="m">int</span> <span class="b">nr_vms</span><span class="f">)</span>
<a name="172" /><span class="False">     172:</span> <span class="f">{</span>
<a name="173" /><span class="False">     173:</span> <span class="f">}</span>
<a name="174" /><span class="True">     174:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="175" /><span class="True">     175:</span> <span class="f">#</span><span class="n">endif</span>
<a name="176" /><span class="True">     176:</span> 
<a name="177" /><span class="True">     177:</span> <span class="m">struct</span> <span class="b">vmalloc_info</span> <span class="f">{</span>
<a name="178" /><span class="True">     178:</span>     <span class="m">unsigned</span> <span class="m">long</span>   <span class="b">used</span><span class="f">;</span>
<a name="179" /><span class="True">     179:</span>     <span class="m">unsigned</span> <span class="m">long</span>   <span class="b">largest_chunk</span><span class="f">;</span>
<a name="180" /><span class="True">     180:</span> <span class="f">}</span><span class="f">;</span>
<a name="181" /><span class="True">     181:</span> 
<a name="182" /><span class="True">     182:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX01NVV8w"><span class="b">CONFIG_MMU</span></a>
<a name="183" /><span class="True">     183:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Vk1BTExPQ19UT1RBTF8w"><span class="b">VMALLOC_TOTAL</span></a> <span class="f">(</span><a href="cpu.c_macros_ref.html#_Vk1BTExPQ19FTkRfMA__"><span class="b">VMALLOC_END</span></a> <span class="f">-</span> <a href="cpu.c_macros_ref.html#_Vk1BTExPQ19TVEFSVF8w"><span class="b">VMALLOC_START</span></a><span class="f">)</span>
<a name="184" /><span class="True">     184:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">get_vmalloc_info</span><span class="f">(</span><span class="m">struct</span> <span class="b">vmalloc_info</span> <span class="f">*</span><span class="b">vmi</span><span class="f">)</span><span class="f">;</span>
<a name="185" /><span class="False">     185:</span> <span class="f">#</span><span class="n">else</span>
<a name="186" /><span class="False">     186:</span> 
<a name="187" /><span class="False">     187:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Vk1BTExPQ19UT1RBTF8w"><span class="b">VMALLOC_TOTAL</span></a> <span class="c">0UL</span>
<a name="188" /><span class="False">     188:</span> <span class="f">#</span><span class="n">define</span> <span class="b">get_vmalloc_info</span><span class="f">(</span><span class="b">vmi</span><span class="f">)</span>            \
<a name="189" /><span class="False">     189:</span> <span class="m">do</span> <span class="f">{</span>                        \
<a name="190" /><span class="False">     190:</span>     <span class="f">(</span><span class="b">vmi</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">used</span> <span class="f">=</span> <span class="c">0</span><span class="f">;</span>            \
<a name="191" /><span class="False">     191:</span>     <span class="f">(</span><span class="b">vmi</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">largest_chunk</span> <span class="f">=</span> <span class="c">0</span><span class="f">;</span>        \
<a name="192" /><span class="False">     192:</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="193" /><span class="True">     193:</span> <span class="f">#</span><span class="n">endif</span>
<a name="194" /><span class="True">     194:</span> 
<a name="195" /><span class="True">     195:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _LINUX_VMALLOC_H */</span>
<a name="196" /><span class="True">     196:</span> </pre>
  </body>
</html>
